package com.iee.patterns.example.strategy.invoker;

import lombok.Data;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 *@ClassName Invoker
 *@Description 执行器
 *@Author longxiaonan@163.com
 *@Date 2021/6/30 0030 17:12
 */
@Data
public class Invoker {

    /** 目标对象 */
    private Object target;

    /**
     * 方法
     */
    private Method method;

    public static Invoker valueOf(Object target, Method method){
        Invoker invoker = new Invoker();
        invoker.setTarget(target);
        invoker.setMethod(method);
        return invoker;
    }

    /**
     * 执行方法
     * @param args
     * @return
     */
    public Object invoke(Object[] args){
        try {
            method.invoke(target, args);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return null;
    }

}
